home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Grand Slam 3
/
Grand Slam 3.iso
/
002
/
thd_11.arj
/
TESTINFO.H
< prev
next >
Wrap
Text File
|
1995-03-05
|
14KB
|
328 lines
/*
This file format may be used freely by
any utility which might have a use for it.
If you program a file processor, you might consider
utilizing the format to simplify the programming of
external interface utilities. (Wouldn't it be nice
if third party utils could be used to interface a
number of upload testers, thus allowing the users
of different BBS packages an opportunity to switch
from one tester to another without having to worry
about interfacing problems?)
****************************************************************************
** **
** TESTINFO_REC record types as created by THD ProScan Version 10.0 **
** (or later) **
** TESTINFO.DAT is a "file of TESTINFO_REC" which is created by **
** THD ProScan when the user has configured a BBSTYPE other than "NONE" **
** in THDINSTL. **
** **
****************************************************************************
Please note, I am NOT a "C" programmer by any stretch of the
imagination. The structures as follows are based on a series
of "best guesses" and does produce the correct result using
BORLAND C++ Version 3.1.
Since I'm not aware of the standards used by "C" programmers
A quick explanation is included.
A boolean is false ONLY if the ordinal value of the char=0
A Turbo Pascal string is an array of char where the ordinal
value of the first character is the length of the string. These
strings may or may not be null terminiated (don't count on it).
The "WORD" type below "may" need to be defined as an unsigned int
as opposed to unsigned short int (as below) with some compilers.
*/
typedef unsigned char boolean; /* Turbo Pascal "boolean" */
typedef unsigned char byte; /* Turbo Pascal "byte" */
typedef signed short int integer; /* Turbo Pascal "integer" */
typedef signed long int longint; /* Turbo Pascal "longint" */
typedef unsigned char string; /* Turbo Pascal "string" */
typedef unsigned short int word; /* Turbo Pascal "word" */
typedef struct
{
boolean FILE_SFX;
boolean FILE_EXISTS;
string FILE_FULL[61];
string FILE_PATH[61];
string FILE_DRIVE[3];
string FILE_NAME[9];
string FILE_EXT[4];
string FILE_TYPE[4];
longint FILE_DT;
longint FILE_SIZE;
} TESTINFO_FILE_REC; /*individual file information record*/
typedef struct
{
boolean Processed;
boolean VND_present;
boolean DESC_imp_req;
boolean ADD_rec;
boolean F_conv;
boolean Ansi_detected;
boolean Avatar_detected;
boolean CD_detected;
boolean RES_bool_one;
boolean RES_bool_two;
boolean RES_bool_thr;
boolean RES_bool_fou;
boolean RES_bool_fiv;
boolean RES_bool_six;
boolean RES_bool_sev;
boolean RES_bool_eig;
boolean RES_bool_nin;
byte Check_count;
byte BBS_type;
byte COM_port;
byte EXIT_level;
byte TESTINFO_REV;
byte RES_byte_one;
byte RES_byte_two;
byte RES_byte_thr;
byte RES_byte_fou;
byte RES_byte_fiv;
byte RES_byte_six;
byte RES_byte_sev;
byte RES_byte_eig;
byte RES_byte_nin;
longint TEST_DT;
longint RES_li_one;
longint RES_li_two;
longint RES_li_thr;
longint RES_li_fou;
longint RES_li_fiv;
longint RES_li_six;
longint RES_li_sev;
longint RES_li_eig;
longint RES_li_nin;
longint RES_li_ten;
string CMD_options[61];
string BBS_data_dir[61];
string Creator[61];
string Log_path[61];
string RES_str60_one[61];
string RES_str60_two[61];
string RES_str60_thr[61];
string Ver_major[3];
string Ver_minor[3];
string VAR_ext[4];
string Desc_filename[13];
string RES_str12_one[13];
string RES_str12_two[13];
string RES_str12_thr[13];
TESTINFO_FILE_REC ORIGINAL_F_info;
TESTINFO_FILE_REC FINISHED_F_info;
integer RES_int_one;
integer RES_int_two;
integer RES_int_thr;
integer RES_int_fou;
integer RES_int_fiv;
integer Descr_Length;
char DIZ_Description[1500];
} TESTINFO_REC; /*format of TESTINFO.DAT individual records*/
/*
*********************************
** EACH RECORD IS 2380 BYTES **
*********************************
This format is Copyright 1994 - 1995 PainSoft and is freely usable but may
not be modified. Persons wishing to add or change fields should contact David
Muir at 1:259/423.0 (fidonet) to discuss suggestions for changes.
This file is an "include" file for use with C++. It defines the
2 "types" used to create the file "TESTINFO.DAT" which is a data file which
can be used by external programs to update the various file databases of BBS
types supported to date.
It includes a great bit of information that could be useful to utility
programmers wishing to program an interface for an upload processor and any
number of BBS programs. Much of the information included here could be easily
determined by programmers. It is included here to simply your efforts (as well
as my own).
TESTINFO.DAT has it's own numbering of BBS TYPES and reserves values of
1-254 for standard definitions. A BBSTYPE of "0" indicates no BBS is involved
and will not cause this file to be written and should therefore never be
encountered.
Currently defined BBS types are as follows
0 - No BBS (create no file)
1 - RemoteAccess 2.00 (and compatibles)
2 - Telegard 2.7
3 - Renegade 07-17 (or compatible)
4 - FILES.BBS (standard)
5 - FILES.BBS (SBBS extended format)
6 - Telegard 3.0
7 - RemoteAccess 2.5?
8 - FILES.BBS (" +" extended format)
9 - PCBoard 15.?
10 - 254 reserved for later definition.
255 - unsupported types. (all types not noted above)
Any creator of this record should increase the "Check_Count" for each
record once for each time the TESTINFO.DAT file is accessed. It is recommended
to delete any record which has a Check_Count of 51 or higher or which is
marked as having been processed.
Date/Time variables as used in these records are in Packed Time Format.
Turbo Pascal users can simply use "unpacktime".
The Packed Time Format (PTF) is a 32 bit Longint decoded as follows:
- for "C" programmers...
shr = shift right
and = bitwise and
$7F = 7Fh
to the best of my understanding.
var
Yr : 0..127; Years since 1980
Month : 1..12; Month number
Day : 1..31; Day of month
Hour : 0..23; Hour of day
Min : 0..59; Minute of hour
Sc : 0..29; Seconds divided by 2
Year : Word;
Sec : Word;
begin
Yr := (PTF shr 25) and $7F ;
Month := (PTF shr 21) and $0F ;
Day := (PTF shr 16) and $1F ;
Hour := (PTF shr 11) and $1F ;
Min := (PTF shr 5) and $3F ;
Sc := (PTF and $1F) ;
Year := 1980 + Yr ;
Sec := 2 * Sc ;
end;
It is also my understanding that "C" programmers could read this longint
as two "words" (the first word being time and the second word being date).
Outline for TESTINFO_FILE_REC as a type used below
FILE_SFX - Is this a self extracting archive?
FILE_EXISTS - did this file exist at the time this record was written
FILE_FULL - fully qualified file path - drive:\path\name.extension
"drive:" will always be included even if the user did not
supply a drive letter in the path to the test file. When this
occurs, THDPRO.EXE inserts the drive specification of the
current drive in this path. That drive specification may
differ from the time THD runs and the time an external utility
runs. Be sure to check the FILE_DRIVE variable to see that
this drive was supplied and not assumed (network drive specs
can change depending on the remote system).
[if length(FILE_DRIVE)=2 then the drive letter was supplied.]
FILE_DRIVE - Drive Letter of file path (colon is included if a drive letter
is defined. In cases where a drive letter is not specifically
supplied, this entry will be empty)
FILE_PATH - file path (in the format "\WHAT\DIR\" with both beginning and
trailing backslashes)
FILE_NAME - file name (name only no "." or extension)
FILE_EXT - file extension [note that the "." is not included in this
record]
FILE_TYPE - file "type" will be one of...
ARC / ARJ / GIF / HYP / LZH / PAK / RAR /SQZ / TD0 /UC2 / ZIP
or NON [for un-supported types] (Types reported here may be
expanded on by third party programmers, but should try to use
accepted conventions for file types, usually the file
extension would be suggested.)
FILE_DT - file date/time - (Turbo Pascal users use "unpacktime")
FILE_SIZE - file size in bytes
The outline for the TESTINFO.DAT record for the purpose of allowing
external manipulation of file data bases or other data which may be of use to
BBS manipulation.
Labels beginning with "RES_" (as in "reserved") are currently not used (or
explained here) but are present to help ensure the future compatibility of
this file format.
Outline for TESTINFO_REC - (as used to create TESTINFO.DAT)
Processed - Has this record been processed? [if true the utility which
created this record should remove this record on it's next
run]. Use this to indicate when the file has been
completely processed and will no longer be required. Proper
use of this field will help to keep the TESTINFO.DAT file
compressed to a reasonable size.
VND_present - is VENDINFO.DIZ present in file?
DESC_imp_req - is Description importation requested? If set to false,
the user has requested that descriptions not be imported
into their file database.
ADD_rec - does the user wish to Create a new entry in their
file database if one is not currently present?
F_conv - was file successfully converted [true even if file type
was not changed during conversion]
Ansi_detected - was ANSI detected on the remote system.
Avatar_detected - was Avatar 0+ detected on remote system.
CD_detected - was carrier detected at last check on remote system?
Check_count - Number of times this record has been found but not
processed [ Recommended to purge any record checked
more than 50 times. as well increment this number by
one each time a new record is added. ]
BBS_type - BBSTYPE as defined above.
COM_port - Comport used during test [0 if local].
EXIT_level - Dos Error level expected to be returned by the creator
of the record.
TESTINFO_REV - The revision number of the TESTINFO file. Currently
there is only revision "1" (This revision).
TEST_DT - date/time [ at time of writing this record ]
CMD_options - Command line options supplied to the creator [The first
and last character must always be " " [space]].
Log_path - This is the full path and filename used as the creator's
temporary log file (if any).
Creator - The name of the Program that created this record.
Under all normal circumstances this will be
"THD ProScan". Although if other programmers choose to
create a record of this type, they should insert their
own identification in this area. This is the ONLY place
where a string variable will contain lower case.
BBS_data_dir - Path to BBS data directory [usually main BBS directory]
Ver_major - Creator's version number (major) [ie. "10"]
Ver_minor - Creator's version number (minor) [ie. "m" or ".0"]
VAR_ext - Variable extension number used for this test. (the three
number extension used on temp directories and files
during this test)
Desc_filename - Name of the file from which the description included
was extracted. [blank if none] This is included if for
some reason the third party programmer wishes to
re-extract the file from which the description was taken.
This file name will always be contained in the main
archive, and thus could be extracted from the resulting
archive if need be. This may be help for instance where a
description is the full 1500 characters and not taken
from a VENDINFO.DIZ. The programmer could re-extract the
description file and use it in it's entirety (if they
wished).
ORIGINAL_F_info - Original file information [as stored in the type
TESTINFO_FILE_REC]. Information on the file prior to
the creator making any modifications.
FINISHED_F_info - Finished file information [as stored in the type
TESTINFO_FILE_REC]. Information on the resulting file after
the creator has completed it's processing of this file.
Changes from the original file "can" occur in any of the
fields through archive conversion or other manipulation.
Descr_Length - Number of characters in the DIZ_Description field
[ 0 if no description, maximum 1500 ]
DIZ_Description - Description containing the full description including
any CR/LF (or other control or non ASCII characters) that
may have been present in the description file used
[maximum 1500 characters]
** NOTE **
All string variables and character variables will be stored as uppercase
in these records except for the "CREATOR" field which contains the name of the
creator of the record. There will be absolutely no lowercase information in
these records anywhere else except in the diz_description field.
Strings and arrays are NOT necessarily null terminated.
*/